#include <QCoreApplication>
#include <iostream>
#include "sales_data.h"
#include "screen.h"

using namespace std;

int pr_7_1()
{
    cout << "请输入交易记录(ISBN、销售量、原价、实际售价): " << endl;
    Sales_data total;  // 保存下一条交易记录的变量
    // 读入第一条交易记录，并确保有数据可以处理
    if (cin >> total) {
        Sales_data trans;  // 保存和的变量
        // 读入并处理剩余交易记录
        while (cin >> trans) {
            // 如果我们仍在处理相同的书
            if (total.isbn() == trans.isbn()) {
                total += trans;  // 更新总销售额
            } else {
                // 打印前一本书的结果
                cout << total << endl;
                total = trans;  // total 现在表示下一本书的销售额
            }
        }
        cout << total << endl;  // 打印最后一本书的结果
    } else {
        // 没有输入！警告读者
        cerr << "No data?" << endl;
        return -1;  // 表示失败
    }
    return 0;
}

int pr_7_3()
{
    cout << "请输入交易记录(ISBN、销售量、原价、实际售价): " << endl;
    Sales_data total;  // 保存下一条交易记录的变量
    // 读入第一条交易记录，并确保有数据可以处理
    if (cin >> total) {
        Sales_data trans;  // 保存和的变量
        // 读入并处理剩余交易记录
        while (cin >> trans) {
            // 如果我们仍在处理相同的书
            if (total.isbn() == trans.isbn()) {
                total.combine(trans);  // 更新总销售额
            } else {
                // 打印前一本书的结果
                cout << total << endl;
                total = trans;  // total 现在表示下一本书的销售额
            }
        }
        cout << total << endl;  // 打印最后一本书的结果
    } else {
        // 没有输入！警告读者
        cerr << "No data?" << endl;
        return -1;  // 表示失败
    }
    return 0;
}

int pr_7_7()
{
    cout << "请输入交易记录(ISBN、销售量、原价、实际售价): " << endl;
    Sales_data total;  // 保存下一条交易记录的变量
    // 读入第一条交易记录，并确保有数据可以处理
    if (read(cin, total)) {
        Sales_data trans;  // 保存和的变量
        // 读入并处理剩余交易记录
        while (read(cin, trans)) {
            // 如果我们仍在处理相同的书
            if (total.isbn() == trans.isbn()) {
                total = add(total, trans);  // 更新总销售额
            } else {
                // 打印前一本书的结果
                print(cout, total);
                cout << endl;
                total = trans;  // total 现在表示下一本书的销售额
            }
        }
        print(cout, total);
        cout << endl; // 打印最后一本书的结果
    } else {
        // 没有输入！警告读者
        cerr << "No data?" << endl;
        return -1;  // 表示失败
    }
    return 0;
}

int pr_7_11()
{
    Sales_data data1;
    Sales_data data2("978-7-121-15535-2");
    Sales_data data3("978-7-121-15535-2", 100, 128, 109);
    Sales_data data4(cin);

    cout << "书籍的销售情况是： " << endl;
    cout << data1 << "\n" << data2 << "\n" << data3 << "\n" << data4 << "\n";
    return 0;
}

int pr_7_13()
{
    Sales_data total(cin);  // 保存当前求和结果的变量
    if (cin) {  // 读入第一笔交易
        Sales_data trans(cin);  // 保存下一条交易数据的变量
        do {
            if (total.isbn() == trans.isbn()) {  // 检查isbn
                total.combine(trans);  // 更新变量 total当前的值
            } else {
                print(cout, total) << endl;  // 输出结果
                total = trans;  // 处理下一本书
            }
        } while (read(cin, trans));
        print(cout, total) << endl;  // 输出最后一条信息
    } else {
        cerr << "No Data?" << endl;  // 没有信息，通知用户
    }
    return 0;
}

int pr_7_27()
{
    Screen myScreen(5, 5, 'X');
    myScreen.move(4, 0).set('#').display(cout);
    cout << "\n";
    myScreen.display(cout);
    cout << "\n";
}

void pr_7_31()
{
    class X;
    class Y {
        X* x;
    };
    class X {
        Y y;
    };
}

void pr_7_41()
{
    Sales_data first("978-7-121-15535-21", 85, 128, 109);
    Sales_data second;
    Sales_data third("978-7-121-15535-21");
    Sales_data four(cin);
}

void pr_7_43()
{
    class NoDefault
    {
    public:
        NoDefault(int i) {
            val = i;
        }
        int val;
    };

    class C
    {
    public:
        NoDefault nd;
        // 必须显式调用 NoDefault 的带参构造函数初始化 nd
        C(int i = 0) : nd(i) { }
    };
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    pr_7_27();

    return a.exec();
}
